home *** CD-ROM | disk | FTP | other *** search
Wrap
// Various IDL interfaces var CachedAimServiceClass = null; var CachedAimManager = null; var CachedAimSession = null; var CachedAimLocateManager = null; var CachedAimBuddyManager = null; var CachedAimOdirManager = null; var CachedAimUserLookupManager = null; var CachedAimChatManager = null; var CachedAimTalkAgent = null; var CachedAimInviteManager = null; var CachedAimPrivacy = null; var CachedAimIM = null; var CachedAimPIM = null; var CachedAimAdminManager = null; var CachedAimABInfo = null; var CachedAimFeedbagManager = null; var CachedAimWarnings = null; var CachedAimPrefsManager = null; var CachedAimStringBundle = null; var CachedAimSoundManager = null; var CachedAimDataSource = null; // Various IDL that represent enumerated types var CachedAimAuthorizerState = null; var CachedAimInsertionStyles = null; var CachedAimPrivacyModes = null; var CachedAimTalkAudioMode = null; function aimDataSource() { try { if (CachedAimDataSource == null) { var RDFClass = Components.classes["@mozilla.org/rdf/rdf-service;1"]; var RDF = RDFClass.getService(Components.interfaces.nsIRDFService); CachedAimDataSource = RDF.GetDataSource("rdf:AIM"); } } catch (e) {}; return CachedAimDataSource; } function aimServiceClass() { try { if (CachedAimServiceClass == null) CachedAimServiceClass = Components.classes['@netscape.com/aim/IMManager;1']; } catch (e) {}; return CachedAimServiceClass; } function aimManager() { try { if (CachedAimManager == null) CachedAimManager = aimServiceClass().getService(Components.interfaces.nsIIMManager); } catch (e) {}; return CachedAimManager; } function aimSession() { try { if(CachedAimSession == null) CachedAimSession = aimManager().QueryInterface(Components.interfaces.nsIAimSession); } catch (e) {}; return CachedAimSession; } function aimPrivacy() { try { if(CachedAimPrivacy == null) CachedAimPrivacy = aimManager().QueryInterface(Components.interfaces.nsIAimPrivacy); } catch (e) {}; return CachedAimPrivacy; } function aimBuddyManager() { try { if(CachedAimBuddyManager == null) CachedAimBuddyManager = aimManager().QueryInterface(Components.interfaces.nsIAimBuddy); } catch (e) {}; return CachedAimBuddyManager; } function aimLocateManager() { try { if(CachedAimLocateManager == null) CachedAimLocateManager = aimManager().QueryInterface(Components.interfaces.nsIAimLocateManager); } catch (e) {}; return CachedAimLocateManager; } function aimOdirManager() { try { if(CachedAimOdirManager == null) CachedAimOdirManager = aimManager().QueryInterface(Components.interfaces.nsIAimOdirManager); } catch (e) {}; return CachedAimOdirManager; } function aimUserLookupManager() { try { if(CachedAimUserLookupManager == null) CachedAimUserLookupManager = aimManager().QueryInterface(Components.interfaces.nsIAimUserLookupManager); } catch (e) {}; return CachedAimUserLookupManager; } function aimChatManager() { try { if(CachedAimChatManager == null) CachedAimChatManager = aimManager().QueryInterface(Components.interfaces.nsIAimChatManager); } catch (e) {}; return CachedAimChatManager; } function aimTalkAgent() { try { if(CachedAimTalkAgent == null) CachedAimTalkAgent = aimManager().QueryInterface(Components.interfaces.nsIAimTalkAgent); } catch (e) {}; return CachedAimTalkAgent; } function aimInviteManager() { try { if(CachedAimInviteManager == null) CachedAimInviteManager = aimManager().QueryInterface(Components.interfaces.nsIAimInviteManager); } catch (e) {}; return CachedAimInviteManager; } function aimSoundManager() { try { if(CachedAimSoundManager == null) CachedAimSoundManager = aimManager().QueryInterface(Components.interfaces.nsIAimSoundManager); } catch (e) {}; return CachedAimSoundManager; } function aimIM() { try { if(CachedAimIM == null) CachedAimIM = aimManager().QueryInterface(Components.interfaces.nsIAimIM); } catch (e) {}; return CachedAimIM; } function aimAdminManager() { try { if(CachedAimAdminManager == null) CachedAimAdminManager = aimManager().QueryInterface(Components.interfaces.nsIAimAdminManager); } catch (e) {}; return CachedAimAdminManager; } function aimABInfo() { try { if(CachedAimABInfo == null) CachedAimABInfo = aimManager().QueryInterface(Components.interfaces.nsIAimABInfo); } catch (e) {}; return CachedAimABInfo; } function aimFeedbagManager() { try { if(CachedAimFeedbagManager == null) CachedAimFeedbagManager = aimManager().QueryInterface(Components.interfaces.nsIAimFeedbagManager); } catch (e) {}; return CachedAimFeedbagManager; } function aimWarnings() { try { if(CachedAimWarnings == null) CachedAimWarnings = aimManager().QueryInterface(Components.interfaces.nsIAimWarnings); } catch (e) {}; return CachedAimWarnings; } function aimPrefsManager() { try { if(CachedAimPrefsManager == null) CachedAimPrefsManager = aimManager().QueryInterface(Components.interfaces.nsIPrefsManager); } catch (e) {}; return CachedAimPrefsManager; } function aimStringBundle() { try { if(CachedAimStringBundle == null) CachedAimStringBundle = aimManager().QueryInterface(Components.interfaces.nsIStringBundle); } catch (e) {}; return CachedAimStringBundle; } // The various enumerated types/interfaces function aimInsertionStyles() { try { if(CachedAimInsertionStyles == null) CachedAimInsertionStyles = Components.interfaces.nsAimInsertionStyles; } catch (e) {}; return CachedAimInsertionStyles; } function aimPrivacyModes() { try { if(CachedAimPrivacyModes == null) CachedAimPrivacyModes = Components.interfaces.nsAimPrivacyModes; } catch (e) {}; return CachedAimPrivacyModes; } /********* Use this to know if two formatted screen names are the same *******/ function aimNormalizeScreenName(oldSN) { return (oldSN.replace(/\s/gi,"")).toLowerCase(); /* // remove spaces var newSN=""; newSN = oldSN.replace(/\s/gi,""); // lower the case newSN = newSN.toLowerCase(); return newSN; */ } function aimIsShrimp() { /** * aimIsShrimp -- Determine if we are running shrimp or not. * Reads aim.app.smallbusiness pref from all-nsnim.j1 * * @author syd 8/8/2000 * @return <code>true</code> is shrimp is installed, <code>false</code> otherwise. */ var isShrimp = aimPrefsManager().GetBoolPref("aim.app.smallbusiness",null, true); return isShrimp; } function aimIsSameScreenName(sN1, sN2) { return (aimNormalizeScreenName(sN1) == aimNormalizeScreenName(sN2)) } function aimMigrateBuddyList( who ) { var whoMigrate = aimPrefsManager().GetCharPref("aim.session.migrateBuddyList",null, true); if ( !whoMigrate || whoMigrate == null || whoMigrate == undefined || whoMigrate != who ) { return; } dump( "***************MigrateBuddyList who " + who + " whoMigrate " + whoMigrate + "\n" ); var IMServiceClass; var pAimMigrator; try { IMServiceClass = Components.classes['@netscape.com/aim/AimMigrator;1']; if ( IMServiceClass != null ) { try { pAimMigrator = IMServiceClass.getService(Components.interfaces.nsIAimMigrator); if ( pAimMigrator != null ) { dump( "****************Got us a migrator, doit!\n" ); pAimMigrator.AimMigratorMigrateBuddyList( who ); aimPrefsManager().SetCharPref("aim.session.migrateBuddyList", "nobody", null, true); } } catch ( exception ) { // nothing } } } catch ( exception ) { // nothing } } function html(node) { var answer = ""; var type = node.nodeType; if (type == Node.ELEMENT_NODE) { // open tag //dump("<" + node.tagName) answer += "<" + node.tagName; // dump the attributes if any attributes = node.attributes; if (null != attributes) { var countAttrs = attributes.length; var index = 0; while(index < countAttrs) { att = attributes[index]; if (null != att) { answer += " " + att.name + "=\"" + att.value + "\""; } index++ } } // close tag answer += ">"; // recursively dump the children if (node.hasChildNodes()) { // get the children var children = node.childNodes; var length = children.length; var count = 0; while(count < length) { child = children[count] answer += html(child) count++ } answer += "</" + node.tagName + ">"; } } // if it's a piece of text just dump the text else if (type == Node.TEXT_NODE) { answer += node.data; } return answer; } function createInstance( contractid, iidName ) { var iid = eval( "Components.interfaces." + iidName ); return Components.classes[ contractid ].createInstance( iid ); } function cmdFileSave() { var fileSpec = createInstance( "@mozilla.org/filespecwithui;1", "nsIFileSpecWithUI" ); var answer; var wind = top.frames["LogWnd"]; if ( wind ) { myhead = wind.document.getElementsByTagName("HEAD").item(0); if (myhead == null) { myhead = wind.document.createElement("HEAD"); myhtml = wind.document.getElementsByTagName("HTML").item(0); myhtml.appendChild(myhead); } mymeta = wind.document.createElement("META"); mymeta.setAttribute("HTTP-EQUIV", "Content-Type"); mymeta.setAttribute("CONTENT", "text/html; charset=UTF-8"); myhead.appendChild(mymeta); answer = html(wind.document.documentElement); answer += "\n"; } else { return; } try { var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); // XXX i18n fp.init(window, aimString( "title.saveconversation" ), nsIFilePicker.modeSave); fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText | nsIFilePicker.filterAll ); var returnCode = fp.show(); if (returnCode == nsIFilePicker.returnOK || returnCode == nsIFilePicker.returnReplace) { dump ("Going to Save: " + fp.file.path + "\n"); var pPAimIM = aimPIMObject(); if (pPAimIM) { pPAimIM.SaveConversation(fp.file.path, answer); } } } catch (ex) { dump("it didnt work for some reason \n"); } } function aimCmdClose() { dump("cmdClose\n"); top.close(); } function cmdFileClose() { aimCmdClose(); } function cmdFilePrint() { dump("Implement Menu Command cmdFilePrint()\n"); top.frames["LogWnd"].print(); } function GetAwayMessagesFileLoc() { /* use the fileLocator to look in the profile directory to find 'panels.rdf', which is the database of the user's currently selected panels. */ var fileLocatorService = Components.classes["@mozilla.org/filelocator;1"].getService(Components.interfaces.nsIFileLocator); /* if <profile>/panels.rdf doesn't exist, GetFileLocation() will copy * bin/defaults/profile/panels.rdf to <profile>/panels.rdf */ /* XXX, yeah, I know, this seems hacky, but they haven't IDLized these constants yet. See nsFileLocations.h for more gore. */ var messages_file = fileLocatorService.GetFileLocation(66626); var userProfile = fileLocatorService.GetFileLocation(0x00010000 + 12); var defaultProfile = fileLocatorService.GetFileLocation(0x00010000 + 18); var userProfileFull = userProfile.URLString + "default-messages.rdf"; var defaultProfileFull = defaultProfile.URLString + "default-messages.rdf"; var screenName = ""; myPref = aimPrefsManager(); if ( myPref ) { try { screenName = myPref.GetCharPref( "aim.session.screenname" , null, false); } catch(e) { screenName = ""; } } if ( screenName != "" ) { screenName = screenName + "."; } // var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); var file = Components.classes["@mozilla.org/filespec;1"].createInstance(Components.interfaces.nsIFileSpec); // dump( "**************initWithPath " + userProfileFull + "\n" ); // file.initWithPath( userProfileFull ); var messages_file_str = messages_file.URLString; messages_file_str = messages_file_str.replace("panels.rdf", screenName +"dm.rdf" ); file.URLString = userProfileFull; // dump( "**************messages_file_str " + messages_file_str + "\n" ); var src = Components.classes["@mozilla.org/filespec;1"].createInstance(Components.interfaces.nsIFileSpec); // dump( "************** got src, setting its URLString \n" ); src.URLString = defaultProfileFull; // dump( "************** src.URLString " + src.URLString + "\n" ); // if default-messages.rdf is not there, and there is no screenname.default-messages.rdf // then copy default-messages.rdf from default dir, and rename it. // else, we have a screename.default-messages.rdf, in which case we do nothing, or we have // a default-messages.rdf that we need to rename to screenname.default-messages.rdf. if ( !file.exists() ) { file.URLString = messages_file_str; if ( !file.exists() ) { // dump( "**************copying " + src.URLString + " to " + userProfile.URLString + "\n" ); src.copyToDir( userProfile ); src.URLString = userProfileFull; // dump( "**************renaming " + src.URLString + " to " + messages_file_str + "\n" ); src.rename( screenName + "dm.rdf" ); } } else { src.URLString = userProfileFull; // dump( "**************renaming " + src.URLString + " to " + messages_file_str + "\n" ); src.rename( screenName + "dm.rdf" ); } return( messages_file_str ); } function getEnums( myInterface ) { var enums = {}; for ( var i in myInterface ) { if ( typeof myInterface[i] == "number" ) { enums[i] = myInterface[i]; } } return enums; } function MigrateDiscover() { var IMServiceClass; var pAimMigrator; try { IMServiceClass = Components.classes['@netscape.com/aim/AimMigrator;1']; if ( IMServiceClass != null ) { try { pAimMigrator = IMServiceClass.getService(Components.interfaces.nsIAimMigrator); if ( pAimMigrator != null ) { version = pAimMigrator.AimMigratorDiscover(); parent.migrationSource = version; if ( version == null || version == "" ) { return false; } var stringPref = {}; var stringPref2 = {}; var enums = getEnums( Components.interfaces.nsIAimMigrator ); // get the default screen name var ret = pAimMigrator.AimMigratorGetStringPref2( enums.DefaultScreenName, stringPref, stringPref2 ); if ( ret == true ) { parent.migrationScreenName = stringPref.value; parent.migrationPassword = stringPref2.value; } else { parent.migrationScreenName = ""; parent.migrationPassword = ""; } // get the remaining screen names, if any var stringPrefVec = {}; var vecSize = {}; stringPrefVec = pAimMigrator.AimMigratorGetStringVectorPref( enums.ScreenName, vecSize ); var i; parent.migrationScreenNameVecSize = vecSize; parent.migrationScreenNameVec = stringPrefVec; return ret; // all we care about is did we get a default screenname } } catch(exception) { return false; } } } catch(exception) { return false; } } function AimOnlineAway() { var RDFClass = Components.classes["@mozilla.org/rdf/rdf-service;1"]; var RDF = RDFClass.getService(Components.interfaces.nsIRDFService); var SessionState = RDF.GetResource("http://home.netscape.com/NC-rdf#OnlineState"); var dataSource = aimDataSource(); var AimSession = RDF.GetResource("NC:AIM/Session"); var session = aimSession(); var target = dataSource.GetTarget(AimSession, SessionState, true); var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; if ("OnlineAway" == state) return true; return false; } function ComeBack() { locateManager = aimLocateManager(); if ( locateManager ) { locateManager.SetUserInfoAwayMessage(null); } } function AimtoOpenWindowByType( inType, uri ) { dump ("AimtoOpenWindowByType " + uri + " \n"); var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService(); var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator); var topWindow = windowManagerInterface.getMostRecentWindow( inType ); if ( topWindow ) { topWindow.focus(); } else window.openDialog(uri, "_blank", "chrome,all,dialog=no", "Setup"); } function toOpenWindowByType( inType, uri ) { dump ("toOpenWindowByType " + uri + " \n"); var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService(); var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator); var topWindow = windowManagerInterface.getMostRecentWindow( inType ); if ( topWindow ) { topWindow.focus(); } else window.openDialog(uri, "_blank", "chrome,all,dialog=no", "Setup"); } function aimGlobalCmdHelp() { if (aimIsShrimp()) { AimtoOpenWindowByType("help:nim","chrome://communicator/content/help/help_nim.xul"); } else { AimtoOpenWindowByType("help:im","chrome://communicator/content/help/help_im.xul"); } } function AimgoClickThrobber(urlPref) { if (aimIsShrimp()) { var url; try { var pref = Components.classes["@mozilla.org/preferences;1"].getService(); if( pref ) pref = pref.QueryInterface( Components.interfaces.nsIPref ); url = pref.getLocalizedUnicharPref(urlPref); aimCmdNewBrowser(url); } catch(e) { url = null; } } else { goClickThrobber( urlPref ); } }